home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 9
/
FM Towns Free Software Collection 9.iso
/
t_os
/
tool
/
hana
/
hio.c
< prev
next >
Wrap
C/C++ Source or Header
|
1994-11-16
|
2KB
|
120 lines
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<ctype.h>
#include"opt.h"
#include"agfont.h"
#include"hio.h"
static char fbuf[20480]; // フォントバッファ
static char buf[1024]; // 文字列用バッファ
// static proto type
static void WriteBitPattern(char b,FILE *fp);
//--------------------------------------------------
//機能:ターゲットファイルから文字列を読み込みその数
// を(全角で)返す。
//入力:文字列を記述したファイル名(半角文字を許さない)
//出力:文字列の数(全角)。
//参照:なし
//--------------------------------------------------
int ReadFile(char *f)
{
FILE *fp;
char *p;
if((fp=fopen(f,"r"))==NULL){
printf("Err: File can not open.\n");
exit(1);
}
fgets(buf,513,fp);
fclose(fp);
if((p=strstr(buf,"\n"))!=NULL){
*p='\0';
}
return(strlen(buf)/2);
}
//--------------------------------------------------
//機能: 花文字をファイルに出力する
//
//入力: 変換対象のファイル名
//出力: なし
//
//参照: WriteBitPattern(),AG_FontRead2(),
// MakeFileName()
//--------------------------------------------------
void MakeHana(char *f)
{
int xloop,yloop,i,j1,j2,k,l;
int fs,spc,fds;
char *p;
FILE *fp;
l=ReadFile(f);
// フォントの(一括)読み込み
fs=GetFontSize();
p=GetFontFile();
AG_ReadFont2(fbuf,buf,fs,p);
// スペースの決定
spc=SetSpace();
// 出力ファイルのオープン
p=MakeFileName(f,"hnm");
if((fp=fopen(p,"w"))==NULL){
printf("Err:Output file can not open.\n");
exit(1);
}
xloop=fs/8;
yloop=fs;
fds=(fs*fs)/8;
for(i=0;i<l;i++){
for(k=0; k<yloop;k++){
for(j1=0;j1<spc;j1++) fprintf(fp," ");
for(j2=0;j2<xloop;j2++){
WriteBitPattern(fbuf[i*fds+k*xloop+j2],fp);
}
fprintf(fp,"\n");
}
fprintf(fp,"\n");
}
fclose(fp);
}
//------------------------------------------
//機能:ビットパターンをファイルに出力する。
//
//入力: char b...ビットパターン
// FILE *fp...出力ファイルへのポインタ
//出力:なし
//参照:なし
//------------------------------------------
void WriteBitPattern(char b,FILE *fp)
{
int i,ptn;
char sp[2];
ptn=GetPattern();
if(ptn==PAT1){
strcpy(sp,"■");
}else if(ptn==PAT2){
strcpy(sp,"□");
}
for(i=0;i<8;i++){
if((b >> (7-i)) & 0x01){
fprintf(fp,"%s",sp);
}else{
fprintf(fp," ");
}
}
}